package cn.dengta.webapp.risk.form;

import java.util.List;

import cn.dengta.webapp.risk.bean.RiskAudioStream;
import lombok.Getter;
import lombok.Setter;

/**
 * 数美风控音频流回调参数
 * https://help.ishumei.com/docs/tj/audioStream/newest/developDoc#%E5%9B%9E%E8%B0%83%E8%BF%94%E5%9B%9E%E7%BB%93%E6%9E%9C
 * @author zw
 * @since 2022-06-20
 */
@Getter
@Setter
public class SmAudioStreamCallbackForm {

	/** 返回码 */
	private int code;
	/** 返回码详情描述 */
	private String message;
	/** 请求唯一标识 */
	private String requestId;

	/** 音频唯一标识 */
	private String btId;
	/** 审核状态0 ：审核中

	 1 ：审核结束 */
	private String statCode;
	/** 风险详情 */
	private Detail audioDetail;

	/** 返回请求参数 data 中的所有字段 */
	private RiskAudioStream.AudioStreamData requestParams;

	@Getter
	@Setter
	public static class Detail {

		/**
		 * 风险级别（code 为 1100 时存在）
		 * 可能返回值：PASS，REVIEW，REJECT
		 * PASS：正常内容，建议直接放行
		 * REVIEW：可疑内容，建议人工审核
		 * REJECT：违规内容，建议直接拦截
		 */
		private String riskLevel;
		/** 音频片段地址，returnAllText 不传或为false 时只返回违规音频片段地址，returnAllText 为 true 时返回所有音频片段地址 */
		private String audioUrl;
		/** 音频业务标签 */
		private List<BusinessLabels> businessLabels;

		/** 开始处理的时间（13 位时间戳） */
		private Long beginProcessTime;
		/** 结束处理的时间（13 位时间戳） */
		private Long finishProcessTime;

		/** 违规内容前一个 10 秒音频片段地址（该参数只有在请求参数中 returnPreAudio 是true 情况下存在） */
		private String preAudioUrl;
		/** 违规内容结束时间（绝对时间） */
		private String audio_endtime;
		/** 违规内容开始时间（绝对时间） */
		private String audio_starttime;
		/** 音频片段文本 */
		private String audioText;
		/** 策略规则风险原因描述 */
		private String description;
		/***/
		private String matchedItem;
		/***/
		private String matchedList;
		/***/
		private String model;
		/**
		 * 标识风险类型
		 * 0：正常
		 * 100：涉政
		 * 110: 暴恐
		 * 120: 国歌
		 * 200：色情
		 * 210：辱骂
		 * 250：娇喘
		 * 300：广告
		 * 400：灌水
		 * 500：无意义
		 * 600 : 违禁
		 * 700：其他
		 * 720：黑账号
		 * 730：黑 IP
		 * 800：高危账号
		 * 900：自定义
		 */
		private int riskType;
		/** 风险原因描述 */
		private String riskTypeDesc;
		/** 房间号 */
		private String room;

	}

	@Getter
	@Setter
	public static class BusinessLabels {
		/** 一级标签 */
		private String businessLabel1;
		/** 二级标签 */
		private String businessLabel2;
		/** 三级标签 */
		private String businessLabel3;
		/** 中文标签描述 */
		private String businessDescription;
	}
}
